# CheckSyntaxErrors.ps1
#V?rifie la syntaxe d'un script avant livraison
# http://keithhill.spaces.live.com/blog/cns!5A8D2641E0963A97!6036.entry

param($path, [switch]$verbose) 
if (!$path) 
   { Write-Host "Usage :`n`r CheckSyntaxErrors.ps1 NomDeFichier.ps1`n`r"
     Write-Host " V?rifie la syntaxe d'un script. L'argument -verbose sp?cifie l'affiche des informations suppl?mentaires lors de la v?rification."
     Return
   }   

if ($verbose) {
    $VerbosePreference = 'Continue'
} 

trap { Write-Warning $_; $false; continue }
& `
{
    if (-not(Test-Path $path)) {Throw "Le fichier n'existe pas."}
    $contents = get-content $path
    $contents = [string]::Join([Environment]::NewLine, $contents)
    [void]$ExecutionContext.InvokeCommand.NewScriptBlock($contents)
    Write-Host "La syntaxe du script est correcte. Contr?ler la validit? de ses instructions."  -F Green
    $true
}
